/**
 * <p>文件名称: StringUtills.java</p>
 * <p>文件描述: 帮助类文件</p>
 * <p>版权所有: 版权所有(C)2006-2011</p>
 * <p>公    司: 成都云联科技有限公司</p>
 * <p>内容摘要: // 字符串处理工具类</p>
 * <p>其他说明: // 其它内容的说明</p>
 * <p>完成日期：// 输入完成日期：2011年5月6日</p>
 * @version 1.0
 * @author  kanors
 *----------------------------------------------------------
 * 修改日期        版本号     修改人	      修改内容
 * ----------------------------------------------------------
 * 2011/05/05	     V1.0	    创建文件	      kanors
 *----------------------------------------------------------------------------
 */

package com.cgbsoft.financial.utils;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import android.util.Log;

public class StringUtils {
	public static byte[] encrypt(byte[] obj) {
		try {
			MessageDigest md5 = MessageDigest.getInstance("MD5");
			md5.update(obj);
			return md5.digest();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	public static String toMD51(byte[] obj) {
		return new String(encrypt(obj));
	}

	public static String toMD5(byte[] bytes) {

		try {

			MessageDigest algorithm = MessageDigest.getInstance("MD5");

			algorithm.reset();

			algorithm.update(bytes);

			return toHexString(algorithm.digest(), "");

		} catch (NoSuchAlgorithmException e) {

			Log.d("-------ERROR-------", "toMd5(): " + e);
			throw new RuntimeException(e);
		}

	}

	private static String toHexString(byte[] bytes, String separator) {

		StringBuilder hexString = new StringBuilder();

		for (byte b : bytes) {
			hexString.append(Integer.toHexString(0xFF & b)).append(separator);
		}

		return hexString.toString();

	}
	
	public static String MD5(String s) {
        try {
            // Create MD5 Hash
            MessageDigest digest = java.security.MessageDigest.getInstance("MD5");
            digest.update(s.getBytes());
            byte messageDigest[] = digest.digest();
                        
            // Create HEX String 
            StringBuffer hexString = new StringBuffer();
            for (int i = 0; i < messageDigest.length; i++) {
                hexString.append(Integer.toHexString(0xFF & messageDigest[i]));
            }
                        
            return hexString.toString();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
                
        return "";
    }
	
	/**
	 * 检查字符串是否为NULL或空白
	 * 
	 * @param str
	 *            字符串
	 * @return 如果空白返回TRUE，否则返回FALSE
	 */
	public final static boolean isNULL(String str) {
		boolean isnull = false;
		if (str == null || str.trim().equals("") || str.trim().equals("null")) {
			isnull = true;
		} else {
			isnull = false;
		}
		return isnull;
	} 

	/**
	 * 截取@前的数据
	 * @param jid 格式XXX@test.com
	 * @return
	 */
	public final static String paramName(String jid) {
		if (jid == null) {
            return null;
        }
        int atIndex = jid.lastIndexOf("@");
        if (atIndex <= 0) {
            return "";
        }
        else {
            return jid.substring(0, atIndex);
        }
	}
	
	/**
	 * 查找字符串在数组中第一次出现的位置
	 * @param stringArr	原始数组
	 * @param findStr	需要查找的字符串
	 * @return
	 */
	public static int findString(String[] stringArr, String findStr) {
		if(stringArr == null) {
			throw new IllegalArgumentException();
		}
		for(int i = 0;i < stringArr.length; i++) {
			if(findStr.equals(stringArr[i])) {
				return i;
			}
		}
		return -1;
	}
	/**
	 * 判断字符串首字符是否为字母
	 * @param str
	 * @return
	 */
	public static boolean checkLetter(String str) {
		char c =  str.charAt(0);
		if((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
			return true;
		}
		return false;
	}
	/**
	 * 判断字符串是否全为数字
	 * @param str
	 * @return
	 */
	public static boolean isNumeric(String str)
	{
		Pattern pattern = Pattern.compile("[0-9]*");
		Matcher isNum = pattern.matcher(str);
		if( !isNum.matches() )
		{
			return false;
		}
		return true;
	}
	/**
	 * 判断字符串是否全为字母
	 * @param str
	 * @return
	 */
	public static boolean isString(String str)
	{
		Pattern pattern = Pattern.compile("[a-zA-Z]*");
		Matcher isNum = pattern.matcher(str);
		if( !isNum.matches() )
		{
			return false;
		}
		return true;
	} 
	
	/**
	 * 对字符串进行utf-8的编码
	 * @param string
	 * @return
	 */
	public static String encodeUTF8(String string) {
		String endcodedStr = string;
		
		try {
			endcodedStr =  URLEncoder.encode(string, "UTF-8");
		} catch (UnsupportedEncodingException e) {}
		
		return endcodedStr;
	}
}
